package com.gzhryc.pay.adaptation.weixin.msg.native_pay;

import java.io.Serializable;

public class WXPayNativeRefundRequest implements Serializable {

    private static final long serialVersionUID = 1L;

    private String transaction_id;      //微信支付订单号
    private String out_trade_no;        //商户订单号
    private String out_refund_no;       //商户退款单号
    private String reason;              //退款原因
    private String notify_url;          //通知地址
    private String funds_account;       //退款资金来源
    private AmountItem amount;          //订单金额
    private GoodsDetailItem goods_detail;

    public String getTransaction_id() {
        return transaction_id;
    }

    public void setTransaction_id(String transaction_id) {
        this.transaction_id = transaction_id;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getOut_refund_no() {
        return out_refund_no;
    }

    public void setOut_refund_no(String out_refund_no) {
        this.out_refund_no = out_refund_no;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public String getNotify_url() {
        return notify_url;
    }

    public void setNotify_url(String notify_url) {
        this.notify_url = notify_url;
    }

    public String getFunds_account() {
        return funds_account;
    }

    public void setFunds_account(String funds_account) {
        this.funds_account = funds_account;
    }

    public AmountItem getAmount() {
        return amount;
    }

    public void setAmount(AmountItem amount) {
        this.amount = amount;
    }

    public GoodsDetailItem getGoods_detail() {
        return goods_detail;
    }

    public void setGoods_detail(GoodsDetailItem goods_detail) {
        this.goods_detail = goods_detail;
    }

    public static class AmountItem implements Serializable {

        private static final long serialVersionUID = 1L;

        private Integer refund;     //退款金额
        private Integer total;      //原订单金额
        private String currency;    // 货币类型,CNY：人民币，境内商户号仅支持人民币

        public Integer getRefund() {
            return refund;
        }

        public void setRefund(Integer refund) {
            this.refund = refund;
        }

        public Integer getTotal() {
            return total;
        }

        public void setTotal(Integer total) {
            this.total = total;
        }

        public String getCurrency() {
            return currency;
        }

        public void setCurrency(String currency) {
            this.currency = currency;
        }
    }

    public static class GoodsDetailItem implements Serializable {

        private static final long serialVersionUID = 1L;

        private String merchant_goods_id;   //商户侧商品编码
        private String wechatpay_goods_id;  //微信支付商品编码
        private String goods_name;          //商品名称
        private Integer unit_price;         //商品单价
        private Integer refund_amount;      //商品退款金额
        private Integer refund_quantity;    //商品退货数量

        public String getMerchant_goods_id() {
            return merchant_goods_id;
        }

        public void setMerchant_goods_id(String merchant_goods_id) {
            this.merchant_goods_id = merchant_goods_id;
        }

        public String getWechatpay_goods_id() {
            return wechatpay_goods_id;
        }

        public void setWechatpay_goods_id(String wechatpay_goods_id) {
            this.wechatpay_goods_id = wechatpay_goods_id;
        }

        public String getGoods_name() {
            return goods_name;
        }

        public void setGoods_name(String goods_name) {
            this.goods_name = goods_name;
        }

        public Integer getUnit_price() {
            return unit_price;
        }

        public void setUnit_price(Integer unit_price) {
            this.unit_price = unit_price;
        }

        public Integer getRefund_amount() {
            return refund_amount;
        }

        public void setRefund_amount(Integer refund_amount) {
            this.refund_amount = refund_amount;
        }

        public Integer getRefund_quantity() {
            return refund_quantity;
        }

        public void setRefund_quantity(Integer refund_quantity) {
            this.refund_quantity = refund_quantity;
        }
    }
}
